// pages/airquality/airquality.js
const app = getApp();
// 修复重复导入问题，只保留一种导入方式
const { deviceApi, userApi } = require('../../services/api');
import { getTodayAirQuality } from '../../services/api.js';

Page({
  /**
   * 页面的初始数据
   */
  data: {
    userInfo: {},
    deviceStatus: {
      isConnected: false
    },
    isLoading: true,
    todayData: {
      score: 120,
      level: '良',
      temperature: 24.5,
      humidity: 55,
      co2: 450,
      pm25: 15,
      formaldehyde: 0.03
    },
    yesterdayData: {
      score: 88,
      level: '良',
      temperature: 23.8,
      humidity: 60,
      co2: 480,
      pm25: 22,
      formaldehyde: 0.04
    },
    errorMessage: '',
    showError: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    console.log('空气质量页面加载');
    
    // 设置一个标志，避免重复加载数据
    this.dataLoaded = false;
    
    // 获取用户信息（优先从全局数据获取）
    if (app.globalData.hasUserInfo && app.globalData.userInfo) {
      // 强制使用默认头像
      let userInfo = app.globalData.userInfo;
      userInfo.avatarUrl = '/images/default-avatar.png';
      userInfo.nickName = 'zzyzzy'; // 强制使用自定义昵称
      this.setData({
        userInfo: userInfo
      });
    } else {
      // 从本地存储获取
      const userInfo = wx.getStorageSync('userInfo') || {};
      // 强制使用默认头像
      userInfo.avatarUrl = '/images/default-avatar.png';
      userInfo.nickName = 'zzyzzy'; // 强制使用自定义昵称
      this.setData({
        userInfo: userInfo
      });
    }
    
    // 检查登录状态
    const token = wx.getStorageSync('token');
    if (!token) {
      console.log('未检测到登录token');
      // 不立即跳转，避免循环跳转
    }
    
    // 监听用户信息更新事件
    if (app.globalData.eventChannel) {
      app.globalData.eventChannel.on('updateUserInfo', () => {
        if (app.globalData.hasUserInfo && app.globalData.userInfo) {
          let userInfo = app.globalData.userInfo;
          userInfo.nickName = 'zzyzzy'; // 强制使用自定义昵称
          this.setData({
            userInfo: userInfo
          });
        }
      });
    }
  },
  
  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {
    console.log('空气质量页面显示');
    
    if (app.globalData.hasUserInfo && app.globalData.userInfo) {
      console.log('从全局数据获取用户信息:', app.globalData.userInfo);
      
      let userInfo = app.globalData.userInfo;
      userInfo.avatarUrl = '/images/default-avatar.png';
      userInfo.nickName = 'zzyzzy'; 
      this.setData({
        userInfo: userInfo
      });
    } else {
      // 从本地存储获取
      const userInfo = wx.getStorageSync('userInfo') || {};
      if (userInfo) {
        console.log('从本地存储获取用户信息:', userInfo);
        // 强制使用默认头像
        userInfo.avatarUrl = '/images/default-avatar.png';
        userInfo.nickName = 'zzyzzy'; 
        this.setData({
          userInfo: userInfo
        });
        // 同时更新全局数据
        app.globalData.userInfo = userInfo;
        app.globalData.hasUserInfo = true;
      }
    }
    
    // 页面显示时，如果还没有加载数据，则加载数据
    if (!this.dataLoaded) {
      this.dataLoaded = true;
      setTimeout(() => {
        this.fetchDeviceData();
      }, 500);
    }
  },
  
  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {
    console.log('页面初次渲染完成');
    // 页面渲染完成后再获取数据，并增加延迟
    if (!this.dataLoaded) {
      this.dataLoaded = true;
      setTimeout(() => {
        this.fetchDeviceData();
      }, 500);
    }
  },
  
  /**
   * 获取设备状态和数据
   */
  fetchDeviceData: function() {
    this.setData({ isLoading: true, showError: false });
    
    
    setTimeout(() => {
      console.log('数据获取成功');
      const mockDeviceStatus = {
        isConnected: true,
        lastConnectTime: new Date().toISOString(),
        batteryLevel: 85,
        signalStrength: 'good',
        deviceId: 'DEVICE_001',
        deviceName: '客厅空气检测仪'
      };
      
      this.setData({
        deviceStatus: mockDeviceStatus,
        isLoading: false
      });
      
      // 设备已连接，获取今日和昨日数据
      this.fetchTodayAndYesterdayData();
    }, 500); // 添加延迟模拟网络请求
  },
  
  /**
   * 获取今日和昨日数据
   */
  fetchTodayAndYesterdayData: function() {
    // 获取今日数据
    const todayPromise = deviceApi.getTodayData();
    
    // 获取昨日数据
    const yesterdayPromise = deviceApi.getYesterdayData();
    
    // 同时处理两个请求
    Promise.all([todayPromise, yesterdayPromise])
      .then(([todayRes, yesterdayRes]) => {
        console.log('今日数据获取成功:', todayRes);
        console.log('昨日数据获取成功:', yesterdayRes);
        
        // 格式化日期
        const today = new Date();
        const yesterday = new Date(today);
        yesterday.setDate(yesterday.getDate() - 1);
        
        const formatDate = (date) => {
          return `${date.getFullYear()}-${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`;
        };
        
        this.setData({
          todayData: todayRes.data,
          yesterdayData: yesterdayRes.data,
          todayDate: formatDate(today),
          yesterdayDate: formatDate(yesterday)
        });
      })
      .catch(err => {
        console.error('获取历史数据失败:', err);
        this.setData({
          showError: true,
          errorMessage: '获取历史数据失败，请重试'
        });
      });
  },
  
  /**
   * 跳转到绑定设备页面
   */
  navigateToBindDevice: function() {
    wx.navigateTo({
      url: '../binddevice/binddevice',
      fail: function(err) {
        console.error('跳转到绑定设备页面失败:', err);
        wx.showToast({
          title: '页面跳转失败，请重试',
          icon: 'none'
        });
      }
    });
  },
  
  /**
   * 跳转到历史记录页面
   */
  navigateToHistory: function() {
    wx.navigateTo({
      url: '../history/history',
      fail: function(err) {
        console.error('跳转到历史记录页面失败:', err);
        wx.showToast({
          title: '页面跳转失败，请重试',
          icon: 'none'
        });
      }
    });
  },
  
  /**
   * 跳转到实时数据页面
   */
  navigateToRealtime: function() {
    wx.navigateTo({
      url: '../realtime/realtime',
      fail: function(err) {
        console.error('跳转到实时数据页面失败:', err);
        wx.showToast({
          title: '页面跳转失败，请重试',
          icon: 'none'
        });
      }
    });
  },
  
  /**
   * 跳转到设置页面
   */
  navigateToSettings: function() {
    wx.navigateTo({
      url: '../settings/settings',
      fail: function(err) {
        console.error('跳转到设置页面失败:', err);
        wx.showToast({
          title: '页面跳转失败，请重试',
          icon: 'none'
        });
      }
    });
  },
  
  /**
   * 刷新数据
   */
  refreshData: function() {
    this.fetchDeviceData();
  },
  
  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function () {
    this.refreshData();
    wx.stopPullDownRefresh();
  },
  
  /**
   * 获取今日空气质量数据
   */
  fetchAirQualityData: function() {
    wx.showLoading({
      title: '加载中',
    });
    
    getTodayAirQuality().then(res => {
      if (res.code === 200) {
        this.setData({
          todayData: res.data,
          isLoading: false
        });
      } else {
        this.setData({
          showError: true,
          errorMessage: res.message || '获取数据失败',
          isLoading: false
        });
      }
      wx.hideLoading();
    }).catch(err => {
      console.error('获取今日空气质量数据失败', err);
      this.setData({
        showError: true,
        errorMessage: '网络错误，请稍后再试',
        isLoading: false
      });
      wx.hideLoading();
    });
  },
  
  /**
   * 获取今日空气质量数据
   */
  fetchTodayData: function() {
    this.setData({ isLoading: true, showError: false });
    
    getTodayAirQuality().then(res => {
      if (res.code === 200) {
        this.setData({
          todayData: res.data,
          isLoading: false
        });
      } else {
        this.setData({
          showError: true,
          errorMessage: res.message || '获取数据失败',
          isLoading: false
        });
      }
    }).catch(err => {
      console.error('获取今日空气质量数据失败', err);
      this.setData({
        showError: true,
        errorMessage: '网络错误，请稍后再试',
        isLoading: false
      });
    });
  }
});